package com.bstech.Classi;

import java.io.File;

import com.bstech.Tabelle.Chiamate;
import com.bstech.Tabelle.Rapportini;
import com.bstech.Tabelle.RapportiniDettaglio;
import com.bstech.Tabelle.RapportiniTecnici;
import com.bstech.Utils.Files;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;

public class StoricizzaTask extends AsyncTask<Integer, Integer, Boolean> {

	private ProgressDialog dlg;
	private Context parent;

	public StoricizzaTask(Context caller) {
		this.parent = caller;
	}

	@Override
	protected void onPreExecute() {
		super.onPreExecute();
		// prima che parta il processo in background (Thread UI)
		try {	
			dlg = new ProgressDialog(parent);
			dlg.setTitle("Storicizzazione Dati");
			dlg.setMessage("Esecuzione Storicizzazione, Attendere...");
			dlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
			dlg.setCanceledOnTouchOutside(false);
			dlg.setCancelable(false);
			dlg.show();
		} catch (Exception e) {}
	}

	@Override
	protected Boolean doInBackground(Integer... params) {
		//il processo da eseguire su un altro thread (Altro Thread)
		try {
			//cancello tutti i record dalle tabelle: CHIAMATE, RAPPORTINI, RAPPORTINI_DETTAGLI, RAPPORTINI_TECNICI
			RapportiniTecnici.Storicizza();
			RapportiniDettaglio.Storicizza();
			Rapportini.Storicizza();
			Chiamate.Storicizza();
			
			//compatto il DB
			Common.db.Compact();
			
			//cancello tutte le cartelle degli allegati dei rapportini che non sono su DB
			File dirAllegati = new File(Common.AttachmentsFilePath);
			String[] dirs = dirAllegati.list();
			if(dirs != null)
				for(int i=0; i < dirs.length; i++)
					if(!Rapportini.Exists(Integer.parseInt(dirs[i])))
						Files.DeleteDirectory(new File(Common.AttachmentsFilePath + dirs[i]));
			
			//cancello tutte le cartelle delle firme dei rapportini che non sono su DB
			File dirFirme = new File(Common.SignaturesFilePath);
			dirs = dirFirme.list();
			if(dirs != null)
				for(int i=0; i < dirs.length; i++)
					if(!Rapportini.Exists(Integer.parseInt(dirs[i])))
						Files.DeleteDirectory(new File(Common.SignaturesFilePath + dirs[i]));
			
			return true;	
		} 
		catch (Exception e){
			return false;
		}
		
	}

	@Override
	protected void onPostExecute(Boolean result) {
		// a processo completato (Thread UI)
		super.onPostExecute(result);
		try {
			dismiss();
		} catch (Exception e) {}
		
	}
	
	public void dismiss()
	{
		if(dlg != null)
			dlg.dismiss();
		dlg = null;
	}
}
